CSS, hoe en waar schrijf ik het?
Home

CSS, hoe en waar schrijf ik het?

CSS, hoe en waar schrijf ik het?

CSS bestaat uit declaraties. Declaraties schrijf je ofwel inline, binnenin de start-tag van een html element met behulp van het style attribuut. Of in een stijlregel. Stijlregels staan inline tussen het style element van het head element of in een extern css bestand. beschrijft de opmaak van een html element op je webpagina.

Syntaxis

  1. Video

  2. Inline declareren:
    css-declaratie
    css-declaratie

    Je gebruikt het style attribuut om CSS declaraties in te plaatsen:

    <!-- Inline css: staat tussen de html door gebruik te 
          maken van het style attribuut -->
    <h1 style="color: aqua;">alle headings zijn blok elementen</h1>
    <a style="color: green;">anchers zijn inline elementen: tweede anker</a>
    <span style="background-color: red; color: white">span gebruik je om tekst te groeperen inline</span>
    <div style="color: burlywood;">gebruik je om tekst te groeperen als blok</div>
    

    De gedeclareerde stijl is alleen van toepassing op deze individuele elementen. Als je alle h1 elementen op de pagina wilt stijlen, heb je stijlregels nodig, interne of externe.

  3. Als je CSS intern of extern wilt declaren gebruik je CSS stijlregels. Elke CSS stijlregel bestaat uit twee delen:
    css-stijlregel
    css-stijlregel
    1. Een lijst van één of meer keuzeschakelaars (selectoren, die door komma’s van elkaar gescheiden worden), waarop de stijlregel zal worden toegepast. In deze les beperken we ons tot type-selectoren, de naam van het html element om te selecteren waarop de stijldeclaraties van toepassing zullen zijn.
      1. Enkelvoudige type-selector

        We gebruiken 1 selector, namelijk h1:

        h1 {
           color: orange;
        }

        Dat betekent dat de stijlregel van toepassing is op alle h1 elementen van de webpagina en dat dus de kleur van de letters in het oranje weergegeven zullen worden.

      2. Type-selector lijst

        Deze stijlregel bepaalt gemeenschappelijke eigenschappen voor het html en body element:

        body, html {
           min-height: 100%
        }

        De volgende stijlregel bepaalt gemeenschappelijke eigenschappen voor alle titels:

        h1, h2, h3, h4, h5, h6 {
            margin: 0 0 20px;
            font-weight: 700
        }
    2. CSS heeft een aantal manieren om elementen op basis van de afstamming (verwantschap) tussen elementen te selecteren. Je gebruikt deze selectoren om meer specifieke keuze te maken.
      1. Descendant combinator
        article address
        
        Elk address element dat zich tussen de openings- en sluitingstag van article bevindt. Ook de address elementen die in andere elementen in het article element staan. Bijvoorbeeld ook het address element dat in de footer van article staat.
      2. Child combinator
        article > address
        
        Alleen die address elementen die 'kinderen' zijn van het article element. Het address element dat in de footer staat zal niet geselecteerd worden.
    3. Een voorbeeld van een interne CSS stijlregel:
      <head>
         ...
         <title>Inline CSS</title> 
         <style type="text/css"> 
            h1
            {
               color: orange;
               background-color: black;
            }
         </style>
      </head>
      

      Deze stijlregel zal toegepast worden op alle h1 elementen.

    4. Een voorbeeld van een externe CSS stijlregel

      Wanneer er iets aan een gebruikte stijl gewijzigd moet worden, hoeft de wijziging niet in elk document afzonderlijk, maar slechts op één plaats in het stijlblad aangebracht te worden.

      1. We slaan de stijl in een ander bestand op, namelijk een extern stijlblad. Het is de gewoonte om externe css bestanden in een submap met de naam css te plaatsen. In ons voorbeeld plaatsen we de stijlregels dus in het bestand css/style.css.
        h1
        {
            color: blue;
            background-color: Fuchsia;
        }
      2. In de HTML-documenten volstaat het met behulp van het link element een eenvoudige verwijzing naar het extern stijlblad te maken:
        <head>
            <title>CSS</title>
            <link href="css/style.css" rel="stylesheet" type="text/css" />
        </head>

Meten

px
  • Aantal pixels
  • Voorbeeld height: 20px:
em
  • de standaard corpsgrootte is in moderne browsers 16px;
  • de afspraak is dat 1em gelijk is aan die standaard corpsgrootte;
  • het World Wide Web Consortium ( W3C ) beveelt het gebruik van ems voor corpsgrootten als een best practice vanwege hun schaalbaarheid;
rem De CSS3 rem unit bepaalt lettergrootte en andere eigenschappen van een element ten opzichte van het root-element, niet t.o.v. het ouderelement, zoals dat het geval is voor de em-eenheid. Lees meer op There’s more to the CSS rem unit than font sizing, 22/03/2013 en op Robin Rendle, Use `rem` for Global Sizing; Use `em` for Local Sizing, March 12, 2016.
ex ex is de hoogte van de x-height van het huidige lettertype. Voorbeeld height: 1ex; wordt bij mijn weten nooit gebruikt;
%
  • als je meet in percenten drukken die percenten altijd een percent uit t.o.v. het directe ouderelement of het element dat er in de hiërarchie net boven staat;
  • als je bijvoorbeeld de breedte en de hoogte van een element in percenten opgeeft moet je ervoor zorgen dat de breedte en de hoogte van alle ouderelement in de hiërarchoe ook in percenten is uitgedrukt.
em-ex
em - ex meeteenheden

Oefening

  1. Video Oefening Deel 1

  2. We bootsen een recensie-artikel na uit de Standaard van zaterdag 3 oktober 2020. Ik heb stukken tekst weggelaten om het overzichtelijk te maken. Het is niet de bedoeling dat we deze opmaak perfect nabootsen. Onze enige bedoeling is aan de hand van dit voorbeeld met CSS aan de slag te gaan:
    Recensie - En eerst is er het woord
    Recensie - En eerst is er het woord
  3. De tekst

    recensie recensie

    En eerst is er het woord

    Wessel te Gussinklo (79) schreef alweer een mateloos boek. Het had het einde van zijn alter ego Ewout Meyster kunnen zijn, maar er komt, als God het belieft, nog meer.

    Peter Jacobs

    Wessel Te Gussinklo
    Op weg naar De Hartz
    Koppernik, 504 blz., 24,50 €
    ★★★★☆


    Je kunt een poging doen om de inhoud van Op weg naar De Hartz na te vertellen, maar zo eenvoudig werken Wessel te Gussinklo’s romans meestal niet. Op weg naar De Hartz is het vierde boek over de coming of age van Ewout Meyster. Hier staat hij op de rand van de volwassenheid, de ware liefde en het schrijverschap.

    Sylvia

    In Op weg naar De Hartz pikken we het leven van Ewout Meyster op als hij 18 is, maar verder ligt de chronologie in dit boek grondig overhoop. Hij is intussen een beginnend schrijver, en mede daardoor bijzonder kwetsbaar en beïnvloedbaar. Dat maakt van hem een ideale prooi voor professor Somsen, een charlatan aan wie hij zijn manuscript toevertrouwt.

    Vooral daar gaat het om: de moeizame zoektocht van een schrijver naar de juiste woorden - of ‘de goede woorden’

    Ondertussen voelt en weet de lezer dat dit een foute boel is, maar Ewout tuint er met open ogen in. Meer nog: Somsen krijgt ook greep op Ewouts seks- en liefdesleven; ook Sylvia, zijn eerste lief, komt in de netten van de gladde goeroe terecht.

    Het lijkt allemaal griezelig, maar misschien is het ook om te lachen? De ironische laag die de schrijver aanbrengt, geeft de lezer alvast soelaas; we zitten dan wel in het volle hoofd van Ewout maar we weten meestal beter dan hij. We zouden hem soms willen wakkerschudden, redden zelfs.

    Ongetwijfeld put Te Gussinklo voor dit boek weer uit eigen ervaring. Hij studeerde psychologie en kent die wereld van binnenuit. Vandaar, waarschijnlijk, dat het portret van ­Somsen zo scherp en vernietigend is.

    Goede woorden

    Wessel te Gussinklo blijkbaar ook niet. Hij is van plan om ons toch nog meer puzzelstukken aan te reiken. Het ‘romannetje’ dat Ewout aan Somsen laat lezen, is teruggevonden (!) en wordt binnenkort gepubliceerd. En misschien komt er nog een deel na het vierde.

    Verschenen op zaterdag 3 oktober 2020

    Peter Jacobs

    Peter Jacobs is redacteur letteren bij De Standaard.

    Meer artikels van Peter Jacobs

  4. Links naar de foto's:
    1. cover van het boek: https://media.standaardboekhandel.be/-/media/mdm/product/9789083048079/frontImagesLink.img
    2. foto van Peter Jacobs: https://static.standaard.be/Assets/Images_Upload/2013/05/03/DSMedewerkers_Peter_Jacobs.jpg
  5. Voorbereiding
    1. Een nieuwe submap maken in de rootmap webtechnologie met de naam labo3.
    2. In de map labo3 een nieuw bestand creëren met de naam recensie-op-weg-naar-de-hartz.html.
    3. De basisstructuur van html toevoegen met ! tab.
    4. Het title element wijzigen Recensie Op weg naar de Hartz.
    5. De meta informatie toevoegen:
      <meta name="application-name" content="Webtechnologie">
      <meta name="description" content="Oefening beginnen met CSS">
      <meta name="keywords" content="html, css, selector, style declaration, style rule, border, color, font">
      <meta name="author" content="Jef Inghelbrecht">
      <meta name="date" content="2020-10-05">
      <meta name="time" content="12:23:33">
    6. Voeg het nav element en de link toe om terug te keren naar de index.html pagina.

    7. Voeg het article element toe.

    8. Kopieer de tekst van de recensie en plak die tussen de article openings- en sluitingstag.

    9. Klik op shift alt f om de tekst te reformateren.

  6. HTML toevoegen:

    Recensie - En eerst is er het woord - ingedeeld met html
    Recensie - En eerst is er het woord - ingedeeld met html
  7. Opmaak met CSS

    1. De tekst die in section staat moet in hoofdletters. We gebruiken interne CSS en voegen daarvoor een stijlregel toe in het style element van het head element:

      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta name="application-name" content="Webtechnologie">
          <meta name="description" content="Oefening beginnen met CSS">
          <meta name="keywords" content="html, css, selector, style declaration, style rule, border, color, font">
          <meta name="author" content="Jef Inghelbrecht">
          <meta name="date" content="2020-10-05">
          <meta name="time" content="12:23:33">
          <style>
              section {
                  text-transform: uppercase;
              }
          </style>
          <title>Recensie Op weg naar de Hartz</title>
      </head>

    2. Om het eerste woord recensie in het rood te schrijven zetten we het woord tussen een span element en gebruiken een inline declaratie om de tekst in het rood weer te geven:
      <body>
          <article>
              <section>
                  <span style="color: red">recensie</span> recensie
              </section>
          ...
    3. Na wat opzoekwerk op de website van De Standaard heb ik de lettertypes gevonden die in het artikel worden gebruikt. Het algemene lettertype is Georgia. Dit wordt toegekend aan het body element. CSS betekent cascading style sheet, d.w.z. dat het lettertype door alle elementen in body overgeërfd wordt. Als alternatief lettertype kiezen we een generiek lettertype, namelijk serif.
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta name="application-name" content="Webtechnologie">
          <meta name="description" content="Oefening beginnen met CSS">
          <meta name="keywords" content="html, css, selector, style declaration, style rule, border, color, font">
          <meta name="author" content="Jef Inghelbrecht">
          <meta name="date" content="2020-10-05">
          <meta name="time" content="12:23:33">
          <style>
              body {
                  font-family: Georgia,serif;           
              }
              section {
                  text-transform: uppercase;
              }
          </style>
          <title>Recensie Op weg naar de Hartz</title>
      </head>
    4. Het lettertype van de tekst in het section element is anders. Dus specificeren we de font-family eigenschap van het section element:
      section {
          text-transform: uppercase;
          /*  commentaar in CSS
              font-family:system,sans-serif; */
          font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif            
      }
    5. De letter in de introductie (header) is iets groter. Vermits we een stijlregel willen die alleen van toepassing is op de header die een directe afstammeling (kind) is van article gebruiken we de child combinator. Aan het font-size attribuut geven we de waarde larger. Dit is een relatieve maat. Het is beter om die grootte niet expliciet op te geven maar dat door de browser te laten berekenen. Dit zorgt ervoor dat je website responsive is en op alle schermen goed weer gegeven zal worden:
      article > header {
          font-size: larger;
      }
      
    6. Een address element met de gegevens van de bron, in dit geval de naam van de auteur. De naam is in een ander lettertype en in het vet
      1. html:
        <address>Peter Jacobs</address>
        
      2. css:
        Standaard staat het address element in schuinschrift. Dat zetten we weer recht met de waarde normal toe te kennen aan het attribuut font-style. Verder maken we de font-size smaller en stellen we een ander font-family in dan die van het body element:
        article > address {
            font-family: -apple-system, system-ui, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
            font-weight: bold;
            font-size: small;
            font-style: normal;
        }
        
        
    7. Een figure met img (de link naar de afbeelding vind je hierboven) en figcaption toevoegen.
      1. html:
        <figure>
            <img src=" https://media.standaardboekhandel.be/-/media/mdm/product/9789083048079/frontImagesLink.img"
                alt="Kaft van het boek Op weg naar De Hartz van Wessel Te Gussinklo">
                <figcaption>
            <span>Wessel Te Gussinklo<br>
            Op weg naar De Hartz</span><br>
            Koppernik, 504 blz., 24,50 €<br>
            <!-- &#9733;&#9734 --> ★★★★☆
        </figcaption>
        </figure>
      2. css:
        Het lettertype is hetzelfde als voor het tekst in het section element. De font-size is smaller. We gebruiken een child combinator om het figcaption element op te maken:
        article figure figcaption {
            font-family: -apple-system, system-ui, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
        }
        Zoals je hierboven kan zien hebben we een span element toegevoegd om eerste twee regels af te zonderen. Want die moeten in het vet worden weergegeven. We gebruiken weer een child combinator om dit te doen:
        article figure figcaption span {
            font-weight:bold;
        }
        
    8. Paragrafen erven de font-family over van body en de font-size erft de standaard grootte van 16 pixels. We hoeven dus geen extra stijlregel toe te voegen. Wel moeten we overal waar nodig het schuinschrift toevoegen met de em tag:
      <p>Je kunt een poging doen om de inhoud van <em>Op weg naar De Hartz</em> na te vertellen, maar zo eenvoudig
          werken Wessel te Gussinklo’s romans meestal niet. <em>Op weg naar De Hartz</em> is het vierde boek
          over de coming of age van Ewout Meyster. Hier staat hij op de rand van de volwassenheid, de ware
          liefde en het schrijverschap.</p>
  8. Video 3

  9. De afbeelding opmaken
    1. De afbeelding is veel te groot. We gebruiken de height eigenschap om die aan te passen. Pas altijd maar 1 zijde aan. Als je zowel de hoogte als de breedte instelt zal de verhouding tussen die twee niet meer kloppen.
    2. Het img element moet links zweven van het figcaption element. Daarvoor gebruik je de float eigeschap. Daarmee geef je aan dat de elementen onder het img element rechts van het img element komen te staan. En dat voor zoveel elementen als er naast het img element plaats is.
    3. Er moet witruimte rechts van en onder de afbeelding toegevoegd worden. Anders plakt de tekst van de figcaption tegen de afbeelding en die van de daarop volgende paragraaf tegen de rand van de afbeelding.
      border-margin-padding
      border-margin-padding
      We kunnen dat voor elke rand doen:
      margin-right: 1rem;
      margin-bottom: 1rem;

      Of een shorthand property gebruiken:

      margin: 0 1rem 1rem 0;
      
      In 1 declaratie stellen we kloksgewijs de boven-, rechter-, onder- en linkerkantlijn in.
    4. Stijlregel voor de afbeelding in het figure element van een artikel:
      article > figure img {
          height: 10rem;
          float: left;
          /* shorthand property */
          margin: 0 1rem 1rem 0;
          margin-left: 0;
      }
    5. Op de afbeelding hieronder zie je dat ook de paragraaf die na de figcaption staat rechts van de afbeelding staat:
      img-float-left
      img-float-left
      Dat is niet wat we willen. Dus gebruiken we de clear eigenschap van het eerste p element dat na de figure komt om aan te geven dat de paragraaf niet rechts van de afbeelding moet komen te staan. We gebruiken daarvoor de adjacent sibling combinator:
      /* adjacent sibling selector (+) 
          selecteert het element dat direct volgt op het eerste opgegeven element */
      article > figure +p {
          clear: both;
      }
      

      Met dit als resultaat:

      p-clear-both
      p-clear-both
  10. Boven en onder het figure element staat een lijn, maar alleen voor het figure element dat een kind is van het article element, niet het figure element dat in het footer element staat. Daarom gebruiken we de child combinator:
    article > figure {
        border-top: solid black 1px;
        border-bottom: solid black 1px;
        height: 12rem;
        padding-top: 1rem;
    }
    
    Julia-Evans-css-borders
    Julia Evans css borders
  11. Het recensieartikel moet in het midden gecentreerd staan. Daarvoor stellen we de padding eigenschap van het body element in. We gebruiken het percent teken om ervoor te zorgen dat het artikel in het midden staat ongeacht de grootte van het scherm (responsive):
    body {
        font-family: Georgia, serif;
        padding: 0 20% 0 20%;
    }
  12. Nu het blockqoute element:
    blockquote {
        border-top: solid black 1px;
        padding: 1rem 0 0 0;
        text-align: center;
        margin: 1rem 10% 1rem 10%;
        font-weight: bold;
        font-style: italic;
    }
  13. En tenslotte het footer element
    1. html
      <footer>
          <p>Verschenen op zaterdag 3 oktober 2020</p>
          <figure>
              <img src="https://static.standaard.be/Assets/Images_Upload/2013/05/03/DSMedewerkers_Peter_Jacobs.jpg"
                  alt="Foto van Peter Jacobs">
              <figcaption>
                  <p>Peter Jacobs</p>
                  <p>Peter Jacobs is redacteur letteren bij De Standaard.</p>
                  <a href="#">Meer artikels van Peter Jacobs</a>
              </figcaption>
          </figure>
      </footer>
    2. css
      1. De de paragraaf met verschijningsdatum moet in het grijs. We gebruiken nu de hexadecimale waarde voor grijs. Dat is alleen geldig voor de p elementen die kind zijn van footer. We gebruiken dus weer de child combinator:
        article footer > p {
            color: #808080;
        }
      2. De link naar de artikels van Peter Jacobs staat in het rood. Nu gebruiken we de rgb functie:

        article footer figcaption a {
            color: rgb(255, 0, 0);
        }
      3. De naam van de auteur staat in een ander lettertype. De naam moet in hoofdletters en de corpsgrootte is groter. Tussen de paragrafen staat geen witruimte, dus zetten we de onderkantlijn op 0:

        article footer figure figcaption p {
            font-family: -apple-system, system-ui, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif;   
            text-transform: uppercase;
            font-size: x-large;
            margin: 0 0 0 0;
        }
        
      4. De naam staat in het eerste p element in de figcaption. Alle paragrafen na de eerste moeten 'normaal' weergegeven worden. We kunnen dus weer de adjacent sibling combinator gebruiken, namelijk alle paragrafen die op een andere paragraaf volgen:

        article footer figure figcaption p +p {
            text-transform: none;
            font-size: 1em;
        }
        
      5. We stellen de hoogte in van de afbeelding:
        article footer figure img {
            height: 5rem;
            float: left;
        }
        
      6. En tenslotte moeten we een grijs kader tekenen rond de footer en plaatsen we witruimte tussen het kader in de inhoud:
        article footer {
            border: solid #C0C0C0 1px;
            padding-left: 1em;;
        }

Resultaat

Resultaat recensie - En eerst is er het woord
Resultaat recensie - En eerst is er het woord

Video oefening 23

JI
2020-10-09 07:12:37